Doom 32X: Resurrection

Doom 32X: Resurrection, also known as Doom32XR and D32XR is a source port based on the Atari Jaguar version of Doom by the D32XR Team, which consists of programmers Victor "Vic" Luchitz and Chilly Willy, tester Matteusbeus with music by Spoony Bard. It is a port of the original Jaguar Doom and Calico codebase to the Sega 32X video game system. It aims to improve the Sega 32X port with enhanced rendering and new features, utilizing reverse-engineering of 32X-specific code.

It received the Mordeth award at the 2021 Cacowards for longest development time.

History
Doom 32X Resurrection started when one of the authors of Resurrection, Vic contacted John Carmack on back in 2020, asking if he had any recollection of where the source code of the Sega 32X port of Doom might be. Carmack believed it had been long lost. Despite not owning a 32X at the time, Vic thought it would be a fun project to reconstruct the missing source code and improve upon it.

The original Jaguar Doom sources as released by Songbird Productions were chosen as a starting ground, to see what was missing in order to get the 32X support working again. It was here when Vic found out about the Calico project, which aims to bring the Atari Jaguar version to PC. As Calico's code is primarily written in, this helped providing cross-platform development. The 32X-specific code had to be reverse-engineered, and significant effort was made to balance the system between the two SH2 processors.

On October 17, 2021, the author of the port Vic the official release version 1.0 on his ongoing development thread.

Features
Aiming to enhance the rushed official release of Doom for the 32X, Resurrection includes the following features:
 * Network support via the (aka Technopop) link cable
 * Smoother yet faithful gameplay
 * Split-screen co-op and deathmatch modes
 * New title screen that resembles the Sega Saturn and Sony PlayStation versions
 * Rendering has been spread across both SH2 processors for better speed
 * User input is processed at 30FPS, while game logic runs at 15FPS
 * Low (two pixel modes) detail modes of 128x144, 128x160 and 160x180 resolution
 * High detail modes of 224x128, 252x144 and 320×180 resolution
 * Anamorphic widescreen support for 16:9 screens
 * Improved visual fidelity (aka ‘high color’) mode
 * soundtrack courtesy of Spoony Bard
 * Selecting between no music, VGM FM music, or playing music from attached
 * Support for 32X+ (CDDA tracks from CUE files) on the MegaSD flashcart
 * Stereo panning for game sounds
 * Save RAM support. This keeps track of finished levels, health, armor, weapons and ammo. Up to eight save slots are provided, as well as an auto-save at the end of each level
 * Support for all Jaguar levels (when the binary is made using Jaguar Doom wad), along with sprite directions and monster in-fighting
 * Support for Jaguar HUD assets
 * Level fixes, courtesy of Wavy
 * Spectres look the way they did in the original PC version
 * When made with the original Doom 32X wad, has the same limitations on levels and sprites and monster in-fighting
 * Three drawing modes:
 * Regular sector based lighting (Better than original Doom 32X in that sprites also use this lighting)
 * "Potato" mode which disables floor and ceiling texturing for improved speed
 * Original Doom fading light rendering
 * 'Always run' option
 * Support for three-button and six-button pads, as well as the Sega mouse. The player can choose how to map the primary three buttons in the menu
 * Verified as working on Kega Fusion 3.64 emulator, BizHawk 2.6.1, a Model 2 Genesis + Model 2 CD + launch 32X (NTSC), Model 2 MD + 32X (PAL), a CDX + 32X, with a NeoFlash NeoMyth MD and the V1 Mega EverDrive, and also with a Mega EverDrive Pro

Development
Below is the change log for the various versions of Doom 32X: Resurrection.

Change log
Changes in v3.1: Changes in v3.0a: Changes in v3.0: Changes in v2.2: Changes in v2.1: Changes in v2.0: Changes in v1.5: Changes in v1.4: Changes in v1.3: Changes in v1.2b: Changes in v1.2a: Changes in v1.2: Changes in v1.1b: Changes in v1.1a: Changes in v1.1:
 * Fixed sound initialization in RetroArch
 * Fixed save RAM support on the MegaSD and some early Mega EverDrive models
 * Fixed music on Refinery not looping properly
 * Increased music playback speed by about 5%
 * Changed sky texture on the “Tower of Babel” to match the original
 * Slightly sped up the melting screen effect on PAL systems
 * Music driver now precaches the entire VGM file in SegaCD word ram to reduce bus contention
 * Fixed issue that prevented the game from launching on the MegaSD
 * Fixed the automap
 * Added the iconic screen melt effect for scene changes
 * Added both the Cyberdemon and Spider MasterMind bosses along with their respective maps
 * Introduced mip-mapping for walls and flats. This is enabled when the highest details setting in the menu is selected
 * The game now requires ROM bank switching support by flashcarts and emulators. Please note that degrees of compatibility across flashcarts and emulators may vary!
 * [BETA] New sound driver that uses the Sega CD hardware to offload sound mixing from the 32X. This results in the game receiving an additional performance boost
 * The number of onscreen sprites has been increased from 60 to 128
 * Maps that have been superseded with CD and SMM encounters have been designated as secret levels
 * Introduced a new Help screen to the main menu, which outlines the basic controls
 * Added “cyberdemonspecial” and “spider mastermind special” DMAPINFO properties
 * The menu cursor now has the same response time in both PAL and NTSC
 * The intermission screen now also displays level completion time (in virtual NTSC time!)
 * Greatly optimized PWM sound mixer
 * Reduced the maximum number of simultaneously played sound effects to 6
 * Decoupled stereo sound spatialization rate from PWM mixer, set it to 15Hz
 * Changed Doomguy’s face turning logic in the statusbar to more closely mimic the original game
 * Bugfix: normal doors played the fast door sound upon closing
 * Bugfix: weapon position was slightly off center in widescreen mode
 * Fixed items not respawning properly in deathmatch
 * Added support for sector type 17 (random flicker)
 * Monsters can now use teleporters
 * The ROM header now lists Sega CD and Sega Mouse as supported devices
 * Various optimizations across the code
 * New exclusive port of the original map "Slough of Despair" (MAP18) by Wavy
 * Added the "skinface" intermission background from the original game
 * Added support for playback of uncompressed 8-bit and IMA ADPCM-compressed 4-bit WAV files.
 * The ZGM music file format has been upgraded to support PCM samples (reserved for future use) and is now part of SGDK's XGM toolset.
 * Fixed bug in the sound mixer which resulted in stereo channels being swapped around occasionally.
 * Added CD/32X+ volume slider to the audio menu.
 * Tweaked MegaSD detection timeout - fixes compatibility issues with MD+ on the MegaEverdrive Pro.
 * The status bar now displays the "mowdown" face upon taking damage from environmental hazards.
 * The 252 pixels-wide screen mode has been widened to 256 pixels.
 * Fixed spectre's position being off on the finale screen.
 * The punch impact sound has been re-added to the game.
 * A different tile is now used for the final text briefing background.
 * Improved framerate in the menus.
 * Added 100% completion color indication to the kills/items/secret counters on the automap.
 * Fixed regressions:
 * SegaCD audio support didn't work
 * Random 'R_FlatNumForName: not found' error in 320px mode
 * Glowing lights were broken
 * Gradient lighting on floors and ceilings was broken
 * Sprites would sometimes partially or completely disappear in 320px mode
 * Fixed an old Jaguar Doom bug related to item collection, where if the player was touching multiple items simultaneously, neither item would be picked up if at least one of them was maxed out in inventory
 * Fixed bug where sprites would sometimes become visible through walls depending on the sector's relative floor height
 * Fixed bug where the game would freeze if player's ammo count was greater than 999
 * Fixed the attack speed of shotgun guys not being consistently doubled in nightmare mode
 * PWM frequency increased from 30Hz to 70Hz, reducing the maximum latency for in*game sounds from 33ms to 14ms
 * Some of the game's assets received color restoration treatment
 * Improved rendering performance in high resolution modes
 * The 320px mode screen size reduced from 184 to 180 pixels
 * Optimized maps loading time
 * Added support for custom finale text and background to the DMAPINFO lump
 * Network support via the Zero Tolerance (aka Technopop) link cable
 * Fullscreen 320x184px (320x224 if you count the status bar) graphics mode
 * A refined palette / colourmap has been added for improved visual fidelity, aka "high colour" mode
 * Controller hot plugging support
 * Anamorphic widescreen support for 16:9 screens
 * 32X+ (CDDA tracks from CUE files) support has been added and is enabled when the MegaSD flash cart is detected
 * Upon completing the game, the song "The End of DOOM" is now played during the final message
 * The colormap now inverts during invulnerability to closer match the original DOS port of the game
 * The AutoMap now has smooth scaling
 * The maximum number of sound channels in the mixer has been increased from 4 to 8
 * Monsters in neighboring sectors are now more likely to wake up when a player fires a weapon
 * Sector lighting now defaults to high detail mode
 * Imps and Cacodemons now have slower projectile speeds
 * Doom 2 map specials are now supported
 * Improved multi-threaded rendering of sprites
 * The map title and stats are now displayed in the automap
 * When possessing the sphere of invulnerability, the god mode face is now shown in the status bar
 * The game can no longer be paused during multiplayer
 * You can no longer attack, strafe or use things when in the automap
 * The Spectre is now featured in the final cast sequence
 * Improved rendering performance by 25%
 * Restored the “Sign of Evil” music track for E1M8
 * Menu logos, font and HUD icons revamped by Polonium to closer match the original box art
 * All maps have proper REJECT lumps now, boosting performance even further.
 * Restored the missing third sight and death grunts for zombie monsters
 * The game now defaults to fullscreen video mode
 * Pressing MODE+Start now switches to fist if you have berserk
 * Fixed the automap being squished vertically and also tweaked default automap scale
 * The automap is now anti-aliased
 * Fixed the menu occasionally wouldn’t play the switch sound upon being brought up
 * The second player can no longer pause or unpause the game in splitscreen mode
 * Added splitscreen coop and deathmatch modes
 * Fixed sounds effects being in mono on real hardware
 * Memory and CPU optimizations
 * Changed 240p PAL mode to use letter-boxing instead of vertical stretching
 * Pressing START button during the finale screen restarts the game now
 * New status bar graphics, that more closely match the PC original, by Wavy
 * New “PAL Aspect ratio” option, which increases vertical screen resolution by 16 pixels, allowing the game graphics to be unsquished on PAL
 * Improved UI responsiveness
 * Restored bridge across the lava in MAP22 that had been missing in the Jaguar version of the map
 * Fixed strobe lights flickering too fast
 * Tweaked timings for the hold mode of the START button
 * Improved compatibility with SRAM saves on older Everdrive models
 * Smooth 30FPS doors and platforms
 * The DOOM logo now scrolls during introduction sequence like it does in PSX version the game
 * Added XZ strafe mapping to options
 * Menu wasn’t visible in automap mode
 * Improved auditory cues in menus
 * Pressing MODE + START now switches to fist
 * Fixed gibbing animation in HUD
 * Strafing now follows the USE action mapping, instead of being hardcoded to “C”
 * Corrected monster animation speed on finale screen and added shot sounds
 * The “New game” menu now remembers the last selected map until game’s restarted
 * Automap scaling isn’t reset on loading a save state anymore
 * Fixed an occasional Z_Free error in map selection menu
 * Fixed chainsaw sounds
 * Added E3M3 “Deep Into the Code” music track
 * Added support for dedicated strafe buttons (Y&Z or C&Z, Y for Use)
 * Fixed double damage taken in lava and slime
 * Fixed powerups expiring at double rate
 * The ‘always run’ mode no longer toggles fast turning
 * Lost souls should now bounce off floors and ceilings (vanilla Doom bug)
 * Draw map titles in menus
 * Navigation is menus should feel snappier now
 * Removed the framerate option from video settings